UNPKG

@restnfeel/agentc-starter-kit

Version:

한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템

94 lines (89 loc) 2.34 kB
import NextAuth from "next-auth"; import GoogleProvider from "next-auth/providers/google"; import { PrismaAdapter } from "@next-auth/prisma-adapter"; import { prisma } from "@/lib/prisma"; // 카카오 프로바이더 정의 const KakaoProvider = { id: "kakao", name: "Kakao", type: "oauth" as const, authorization: { url: "https://kauth.kakao.com/oauth/authorize", params: { scope: "profile_nickname profile_image account_email", }, }, token: "https://kauth.kakao.com/oauth/token", userinfo: "https://kapi.kakao.com/v2/user/me", clientId: process.env.KAKAO_CLIENT_ID, clientSecret: process.env.KAKAO_CLIENT_SECRET, profile(profile: any) { return { id: profile.id.toString(), name: profile.kakao_account?.profile?.nickname || profile.properties?.nickname, email: profile.kakao_account?.email, image: profile.kakao_account?.profile?.profile_image_url || profile.properties?.profile_image, }; }, }; // 네이버 프로바이더 정의 const NaverProvider = { id: "naver", name: "Naver", type: "oauth" as const, authorization: { url: "https://nid.naver.com/oauth2.0/authorize", params: { scope: "name email profile_image", }, }, token: "https://nid.naver.com/oauth2.0/token", userinfo: "https://openapi.naver.com/v1/nid/me", clientId: process.env.NAVER_CLIENT_ID, clientSecret: process.env.NAVER_CLIENT_SECRET, profile(profile: any) { return { id: profile.response.id, name: profile.response.name, email: profile.response.email, image: profile.response.profile_image, }; }, }; const handler = NextAuth({ adapter: PrismaAdapter(prisma), providers: [ GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID!, clientSecret: process.env.GOOGLE_CLIENT_SECRET!, }), KakaoProvider, NaverProvider, ], callbacks: { async session({ session, user }) { if (session?.user) { session.user.id = user.id; } return session; }, async jwt({ user, token }) { if (user) { token.uid = user.id; } return token; }, }, session: { strategy: "database", }, pages: { signIn: "/auth/signin", error: "/auth/error", }, }); export { handler as GET, handler as POST };